//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//

//
#ifndef Green_VmManagerGPGPU_H
#define Green_VmManagerGPGPU_H

#include "VmManager.h"

namespace Green {

  /*!
    \class VmManagerGPGPU
    \brief GPGPU virtual memory manager class.
  */

  class VmManagerGPGPU : public VmManager {
  public:
    Object * Clone() const override { return new VmManagerGPGPU(*this); } //!< Clone VmManagerGPGPU object.
    const std::string ToString() const override { return Type(); } //!< Return a string describing the VmManagerGPGPU object.
    const char* Type() const override { return "VmManagerGPGPU"; }

    VmManagerGPGPU() : VmManager() { } //!< Default constructor.
    ~VmManagerGPGPU(); //!< Destructor.

    VmInfo* VmInfoInstance() const override; //!< Return an GPGPU VmInfo instance.
  protected:
    VmManagerGPGPU(const VmManagerGPGPU& rOther); //!< Copy constructor.
    VmFactory* VmFactoryInstance(EVmRegimeType vmRegimeType) const override; //!< Return an VmFactory object based on the GPGPU VM architecture type.
  };

};

#endif
